package com.saydc.actions.promociones;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.saydc.beans.Usuario;
import com.saydc.dao.ExpertiseDAO;
import com.saydc.dao.PromocionesDAO;
import com.saydc.forms.promociones.PromocionEmpleadoExpertiseForm;
import com.saydc.model.Empleado;
import com.saydc.model.EstadoPromocion;
import com.saydc.model.Expertise;
import com.saydc.model.Promocion;

public class PromocionaExpertiseAction extends Action {
	
	private SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
	
	@SuppressWarnings("unchecked")
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		Empleado empleado = (Empleado)request.getSession().getAttribute("empleado");
		List<Expertise> listaExpertises = (List<Expertise>)request.getSession().getAttribute("listaExpertises");
		Usuario usuarioLogueado = (Usuario)request.getSession().getAttribute("usuarioLogueado");
		ExpertiseDAO expertiseDao = ExpertiseDAO.getInstance();
		
		PromocionEmpleadoExpertiseForm promoForm = (PromocionEmpleadoExpertiseForm)form;
		
		Promocion promocion = new Promocion();
		promocion.setEmpleado(empleado);
		promocion.setExpertise(true);
		promocion.setExpertisePromocion(expertiseDao.getExpertiseFromLista(listaExpertises, promoForm.getExpertise()));
		promocion.setPuesto(false);
		promocion.setPuestoPromocion(null);
		promocion.setFechaPromocion(sdf.parse(promoForm.getFechaPromocion()));
		promocion.setPropositor(usuarioLogueado);
		promocion.setRemuneracionPropuesta(Double.parseDouble(promoForm.getRemuneracionPropuesta()));
		promocion.setFechaSolicitada(new Date());
		promocion.setEstadoPromocion(EstadoPromocion.getEstadoPromocion(EstadoPromocion.SOLICITADA));
		
		PromocionesDAO dao = PromocionesDAO.getInstance();
		dao.altaPromocion(promocion);
		
		return mapping.findForward("success");
	}

}
